package com.tgu.home_action.dao;

import com.tgu.home_action.pojo.Admin;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface AdminMapper {

    /**
     * 通过手机号查询管理园账号
     *
     * @param userName：账号
     * @return AdminBean
     */
    @Select("select * from admins where user_name=#{userName}")
    Admin getUserByUserName(String userName);

    /**
     * 添加管理员
     *
     * @param adminBean：管理员信息
     */
    @Insert("insert into admins (user_name,password,role_id,province,city,district,register_time,name,avatar_url) values(#{userName},#{password},#{roleId},#{province},#{city},#{district},#{registerTime},#{name},#{avatarUrl})")
    void addAdmin(Admin adminBean);

    /**
     * 修改管理员信息
     *
     * @param adminBean ：管理员信息
     */
    void updateAdmin(Admin adminBean);

    /**
     * 删除管理员账号
     */
    @Delete("delete from admins where id=#{id}")
    void delAdmin(Integer id);

    /**
     * 获取管理员身份
     *
     * @param roleId：身份ID
     * @return role
     */
    @Select("select role from roles where id=#{roleId}")
    String getRole(String roleId);

    /**
     * 通过ID查询
     */
    @Select("select * from admins where id=#{id}")
    Admin getById(Integer id);

    /**
     * 修改密码
     */
    @Update("update admins set password=#{password} where id=#{id}")
    void updatePassword(Admin admin);

    /**
     * 修改个人地域信息
     */
    void updatePlace(Admin adminBean);

    /**
     * 修改姓名/头像
     */
    void updateInfo(Admin adminBean);

    /**
     * 获取符合条件的管理员数量
     */
    Integer getAdminSum(Admin admin);

    /**
     * 获取符合条件的管理员
     */
    List<Admin> getAdmins(Admin admin);

    /**
     * 修改头像
     */
    @Update("update admins set avatar_url=#{avatarUrl} where id=#{id}")
    void updateAvatar(Integer id, String avatarUrl);

    /**
     * 查询管理员的名字
     */
    @Select("select name from admins where id = #{id}")
    String getNameById(Integer id);
}
